package com.java.yz.day09.ketang;
/* 局部内部类：
    可以直接访问外部类的成员
    可以创建内部类对象，通过对象调用内部类方法，来使用局部内部类功能

    局部内部类访问局部变量的注意事项：
    必须被final修饰?
    为什么呢?
    因为局部变量会随着方法的调用完毕而消失，这个时候，局部对象并没有立马从堆内存中消失，
    还要使用那个变量。为了让数据还能继续被使用，就用fianl修饰，这样，在堆内存里面存储的其实是一个常量值。
    通过反编译工具可以看一下。
 */
class Outer1{
    int a=3;
    public void f1(){
        int b=3;  //这里会默认有一个关键字final修饰
        class In1{

            public void f11(){
                //b=2;   //java: 从内部类引用的本地变量必须是最终变量或实际上的最终变量
                System.out.println("学习");
            }
        }
        In1 in1 = new In1();
        in1.f11();
    }
}
public class InnerClassDemo4 {
    public static void main(String[] args) {
        Outer1 outer1 = new Outer1();
        outer1.f1();
    }
}
